Operating system virtualization enables a number of different operating systems to execute on a single host computing device, thereby expanding the number of applications that can be executed on the host computing device and expanding the capabilities of the host computing device. In an operating system virtualization environment, the host computing device includes a host operating system that runs directly on the physical hardware of the host device. To achieve operating system virtualization, the host operating system may execute an emulator program that creates an environment sufficient to run another operating system, which is referred to as a guest operating system. For example, a game console computing device may execute a host game console operating system such as the Xbox operating system from MICROSOFT Corp. of Redmond, Wash. Through emulation, the game console may create an environment adequate to execute a guest operating system, such as the Windows operating system also from the above mention MICROSOFT Corp.
One problem that occurs in the operating system virtualization context relates to computing resources such as data storage devices, data input and output devices, networking devices, etc. Because each of host computing device's multiple operating systems may have different functionality, there is a question as to which computing resources should be apportioned to which of the multiple operating systems. For example, a virtualized host computing device may include only a single network interface card (NIC) that enables the host computing device to communicate with other networked computers. This scenario raises the question of which of the multiple operating systems on the virtualized host should be permitted to interact with and control the NIC.
One potential solution to this problem is to simply grant the host operating system exclusive access and control over the host computing device's resources. While this solution is relatively straightforward, it is disadvantageous because it restricts the host computing device's capabilities to the capabilities of the host operating system. This may not be problematic when the host operating system offers the most advanced capabilities for using a particular resource. However, when a guest operating system offers more advanced capabilities for using a resource than does the host operating system, it becomes wasteful to not leverage the guest's capabilities.
To illustrate this concept, consider the above example of a host game console with a host game console operating system and a guest PC operating system. PC operating systems may include advanced computer networking capabilities such as support for advanced Internet addressing protocols such as IPv6 and security protocols such as IPSec. By contrast, because they are not specifically developed for general-purpose network use, game console operating systems may not include advanced networking capabilities such as those described above. Thus, if the host game console includes only a single NIC card, and the host game console operating system is granted exclusive access and control over the single NIC card, then the advanced networking capabilities of the PC operating system may not be available to the user of the game console. Rather, the game console may be restricted to the limited networking capabilities of the game console operating system.
Another potential solution to the problem of allocating computing resources is to attempt to increase the number of resources available to a host computing device. For example, a game console that executes two operating systems could be equipped with two NIC's. While this is another straightforward solution to the problem, it is also disadvantageous because it raises the cost of the host computing device. Moreover, additional access to computing resources may not always be available to all of the virtualized operating systems on a virtualized computing device.
Thus, what is needed is a way to allocate computing resources between a host operating system and a guest operating system in an efficient and cost effective manner such that the host computing device is not necessarily limited to the capabilities of the host operating system.